package com.cykj.pos.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cykj.pos.domain.BizCrownSpecial;
import com.cykj.pos.domain.BizMerchBill;
import com.cykj.pos.domain.BizShareDetail;
import com.cykj.pos.domain.dto.ShareCalcDetailDTO;
import com.cykj.pos.profit.dto.ShareDetailDTO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 分润明细Mapper接口
 */
public interface BizShareDetailMapper extends BaseMapper<BizShareDetail> {

    // 自身交易记录信息
    BizShareDetail queryOwnDealInfo(ShareDetailDTO shareDetailDTO);

    // 下级交易记录信息
    BizShareDetail queryParentDealInfo(ShareDetailDTO shareDetailDTO);

    // 查出下级的merch_id
    List<ShareDetailDTO> queryParentMerchId(ShareDetailDTO shareDetailDTO);

    // 查询下级的交易量 单个的
    BizShareDetail queryParentDealSum(ShareDetailDTO shareDetailDTO);

    // 查询交易总量
    BigDecimal queryTransAmount(ShareDetailDTO shareDetailDTO);

    // 查询下线的总交易量 分开
    BigDecimal queryParentAllDealSum(ShareDetailDTO shareDetailDTO);

    // 查询合作伙伴
    List<ShareDetailDTO> queryMerchantInfo();

    // 通过parent_id 去查询上级姓名
    ShareDetailDTO queryParentName(Long parentId);

    // 查询线下每个刷卡交易总量
    BizShareDetail queryParentDealSlotCard(ShareDetailDTO shareDetailDTO);

    //通过账单查询分润信息
    BizShareDetail queryBillTypeTwo(BizMerchBill bizMerchBill);

    // 查询所有特殊的皇冠比例
    List<BizCrownSpecial> querySpecialCrown();

    // 更改特殊皇冠比例
    void updateCrownSpecial(BizCrownSpecial bizCrownSpecial);

    /**
     * 更新特殊分润人员ixnx
     */
    void updateSpecialShareDetail();
    /**
     * 根据订单号查询伙伴交易信息
     * @param orderId
     * @return
     */
    List<ShareCalcDetailDTO> selectShareDetailListByOrderId(String orderId);
    /**
     * 根据商户id查询分润信息  把所有的子节点放到一个数组中
     * @param member
     * @return
     */
    List<ShareCalcDetailDTO> selectShareDetailListByMerchIdAndOrderId(ShareCalcDetailDTO member);
    /**
     * 获得所有的叶子节点
     * @param member
     * @return
     */
    List<ShareCalcDetailDTO> selectShareDetailLeafListByMerchIdAndOrderId(ShareCalcDetailDTO member);

    /**
     * 更新销售额的分润
     * @param shareCalcDetailDTO
     */
    int updateFinalDealProfitById(ShareCalcDetailDTO shareCalcDetailDTO);
}
